home *** CD-ROM | disk | FTP | other *** search
/ Aminet 37 / Aminet 37 (2000)(Schatztruhe)[!][Jun 2000].iso / Aminet / dev / lang / sofa.lha / sofa / developer / script / recursive_remove_pattern.rexx < prev    next >
OS/2 REXX Batch file  |  1999-10-10  |  2KB  |  58 lines

  1. /* recursive_remove_pattern.rexx -- Recursively remove files matching a pattern.
  2.  *
  3.  * Note: This is quite destinct from the normal `delete' command
  4.  * because it removes *all* files matching the patter in *all*
  5.  * directories relative to the current directory.
  6.  *
  7.  * WARNING: This script is rather violent. Be sure that PATTERN makes
  8.  * sense, that backup of your data exist. Also note that even delete
  9.  * protected files are removed without questions asked.
  10.  *
  11.  * $VER: recursive_remove_pattern.rexx 1.0 (9.10.99)
  12.  */
  13. AddLib('rexxsupport.library', 0, -30, 0)
  14. AddLib('rexxdossupport.library', 0, -30, 2)
  15.  
  16. temp_file = 't:remove_pattern_' || Pragma('ID') || '.tmp'
  17. exit_code = 0
  18.  
  19. /* Parse CLI arguments */
  20. Parse Arg arguments
  21.  
  22. template = "Directory/A,Pattern/A/K"
  23. if ~ReadArgs(arguments, template) then do
  24.    Say 'error in arguments: ' || Fault(RC)
  25.    exit 10
  26. end
  27.  
  28. old_directory = Pragma('Directory', directory)
  29.  
  30. Address Command 'list all files pat="' || pattern || '" lformat="%p%n" >' || temp_file
  31. if ~Open('list', temp_file, 'read') then do
  32.    Say 'Cannot read file list from "' || temp_file || '"'
  33.    exit_code = 10
  34. end
  35. else do
  36.    do while ~eof('list')
  37.       file = ReadLn('list')
  38.       if file ~= '' then do
  39.          Say '   ' || file
  40.          if Delete(file) = 0 then do
  41.             /* Try to unprotect file */
  42.             Address Command 'protect "' || file || '" RWED add'
  43.             if Delete(file) = 0 then do
  44.                Say '      not deleted'
  45.                exit_code = 10
  46.             end
  47.          end
  48.       end
  49.    end
  50.    call Close('list')
  51. end
  52.  
  53. call Delete(temp_file)
  54.  
  55. Pragma('Directory', old_directory)
  56.  
  57. exit exit_code
  58.